Method and System for Providing a User Agent String Database

ABSTRACT

Method, system, and programs for determining a keyword from user agent strings are disclosed. In one example, a plurality of user agent strings is received. The plurality of user agent strings is grouped into one or more clusters. The one or more clusters comprise a first cluster that includes two or more user agent strings. The two or more user agent strings in the first cluster are compared. Based on the comparing, a keyword is determined from the first cluster. The keyword represents a type of user agent information.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. Pat. Application No.16/007,029, filed Jun. 13, 2018, which is a continuation of U.S. Pat.Application No. 14/410,702 filed Dec. 23, 2014, which is the UnitedStates national phase of International Application No. PCT/CN2014/092120filed on Nov. 25, 2014, the contents of which are all incorporatedherein by reference in their entireties.

BACKGROUND 1. Technical Field

The present teaching relates to methods, systems, and programming forInternet services. Particularly, the present teaching is directed tomethods, systems, and programming for user agent string analysis.

2. Discussion of Technical Background

A user agent is software that is acting on behalf of a user. When theuser agent operates in a network protocol, it often identifies itself bysubmitting a characteristic identification string, called a user agentstring, to an application server. It is important for the applicationserver to accurately detect the user agent’s identity, e.g. itsapplication type, device information, operating system (OS), OS version,software vendor, software revision, browser, and browser version, basedon the user agent string.

Existing techniques for detecting a user agent identity focus oncomparing the user agent string with predefined regular expressions. Theidentity can be detected only when the user agent string matches anentire predefined regular expression, e.g. “Mozilla/[version] ([systemand browser information]) [platform] ([platform details]) [extensions]”according to a main stream user agent schema. However, there are a hugenumber of user agent strings that do not conform to the main stream useragent schema. The user agent schema is always changing and can hardly becovered by predefined regular expressions, which yields a low detectionrate of user agent identity. In addition, there will be new devices, newOS or OS versions, new browsers every month or even every week. In thatsituation, existing techniques need efforts to collect new informationfrom market/manufacturers to generate new regular expressions and makesure they don’t conflict with existing regular expressions, whichrequires lots of manual work from a big human team.

Therefore, there is a need to provide an improved solution for detectinga user agent identity to solve the above-mentioned problems.

SUMMARY

The present teaching relates to methods, systems, and programming forInternet services. Particularly, the present teaching is directed tomethods, systems, and programming for user agent string analysis.

In one example, a method, implemented on at least one computing deviceeach of which has at least one processor, storage, and a communicationplatform connected to a network for determining a keyword from useragent strings, is disclosed. A plurality of user agent strings isreceived. The plurality of user agent strings is grouped into one ormore clusters. The one or more clusters comprise a first cluster thatincludes two or more user agent strings. The two or more user agentstrings in the first cluster are compared. Based on the comparing, akeyword is determined from the first cluster. The keyword represents atype of user agent information.

In another example, a system having at least one processor storage, anda communication platform for determining a keyword from user agentstrings, is disclosed. The system comprises a user agent receiver, auser agent clustering unit, a user agent comparing unit, and a keyworddeterminer. The user agent receiver is configured for receiving aplurality of user agent strings. The user agent clustering unit isconfigured for grouping the plurality of user agent strings into one ormore clusters. The one or more clusters comprise a first cluster thatincludes two or more user agent strings. The user agent comparing unitis configured for comparing the two or more user agent strings in thefirst cluster. The keyword determiner is configured for determining akeyword from the first cluster based on the comparing. The keywordrepresents a type of user agent information.

Other concepts relate to software for implementing the keyworddetermination from user agent strings. A software product, in accordwith this concept, includes at least one machine-readable non-transitorymedium and information carried by the medium. The information carried bythe medium may be executable program code data regarding parameters inassociation with a request or operational parameters, such asinformation related to a user, a request, or a social group, etc.

In one example, a non-transitory machine-readable medium havinginformation recorded thereon for determining a keyword from user agentstrings is disclosed. The information, when read by the machine, causesthe machine to perform the following. A plurality of user agent stringsis received. The plurality of user agent strings is grouped into one ormore clusters. The one or more clusters comprise a first cluster thatincludes two or more user agent strings. The two or more user agentstrings in the first cluster are compared. Based on the comparing, akeyword is determined from the first cluster. The keyword represents atype of user agent information.

BRIEF DESCRIPTION OF THE DRAWINGS

The methods, systems, and/or programming described herein are furtherdescribed in terms of exemplary embodiments. These exemplary embodimentsare described in detail with reference to the drawings. Theseembodiments are non-limiting exemplary embodiments, in which likereference numerals represent similar structures throughout the severalviews of the drawings, and wherein:

FIG. 1 illustrates an exemplary system for analyzing user agent strings,according to an embodiment of the present teaching;

FIG. 2 illustrates keyword list stored in a database, where each keywordis associated with type, priority and validation conditions, accordingto an embodiment of the present teaching;

FIG. 3 illustrates version extraction patterns stored in a database,where each keyword may be associated with different version extractionpatterns, according to an embodiment of the present teaching;

FIG. 4 illustrates an exemplary diagram of a user agent string analyzingengine, according to an embodiment of the present teaching;

FIG. 5 is a flowchart of an exemplary process performed by a user agentstring analyzing engine, according to an embodiment of the presentteaching;

FIG. 6 is a flowchart of another exemplary process performed by a useragent string analyzing engine regarding extracting keywords, accordingto an embodiment of the present teaching;

FIG. 7 is a flowchart of yet another exemplary process performed by auser agent string analyzing engine regarding extracting a version foreach keyword, according to an embodiment of the present teaching;

FIG. 8 illustrates an exemplary diagram of an analyzing databasebuilding engine, according to an embodiment of the present teaching;

FIG. 9 is a flowchart of an exemplary process performed by an analyzingdatabase building engine, according to an embodiment of the presentteaching;

FIG. 10 illustrates an exemplary diagram of a user agent clusteringunit, according to an embodiment of the present teaching;

FIG. 11 is a flowchart of an exemplary process performed by a user agentclustering unit, according to an embodiment of the present teaching;

FIG. 12 illustrates an exemplary diagram of a keyword extractor,according to an embodiment of the present teaching;

FIG. 13 is a flowchart of an exemplary process performed by a keywordextractor, according to an embodiment of the present teaching;

FIG. 14 is a high level depiction of an exemplary networked environmentfor analyzing user agent strings, according to an embodiment of thepresent teaching;

FIG. 15 is a high level depiction of another exemplary networkedenvironment for analyzing user agent strings, according to an embodimentof the present teaching;

FIG. 16 illustrates coverage rates for detecting different user agentidentity information, according to an embodiment of the presentteaching;

FIG. 17 illustrates OS coverage rates of different products, accordingto an embodiment of the present teaching;

FIG. 18 depicts a general mobile device architecture on which thepresent teaching can be implemented; and

FIG. 19 depicts a general computer architecture on which the presentteaching can be implemented.

DETAILED DESCRIPTION

In the following detailed description, numerous specific details are setforth by way of examples in order to provide a thorough understanding ofthe relevant teachings. However, it should be apparent to those skilledin the art that the present teachings may be practiced without suchdetails. In other instances, well known methods, procedures, systems,components, and/or circuitry have been described at a relativelyhigh-level, without detail, in order to avoid unnecessarily obscuringaspects of the present teachings.

The present disclosure describes method, system, and programming aspectsof efficient and accurate user agent identity detection. The method andsystem as disclosed herein aim at improving detection rate and coverageof user agent identity information, including but not limited toapplication type, device information, OS, OS version, software vendor,software revision, browser, browser version, etc. A user agent stringanalyzing engine may receive a user agent string from a user, via anapplication server. Based on a list of predefined keywords, theanalyzing engine may extract candidate keywords from the user agentstring, and validate some of them as keywords based on e.g. theirneighbor charsets. For example, based on left charset and right charsetof a candidate keyword, the analyzing engine may determine whether thecandidate keyword is a true keyword or not. The keywords can include OSkeywords, browser keywords, etc.

For OS keywords, the analyzing engine can sort them based on theirpredetermined weights. For example, when there are two or more OSkeywords shown in the user agent string, their weights can be used todetermine which OS keyword represents the true OS. The analyzing enginemay also retrieve extraction patterns for each OS keyword from adatabase. An extract pattern may be used to extract OS version based onconditions the user agent string matches with. For example, an extractpattern may indicate that if a user agent string includes a sub-string“ber” followed by “(\d+\.\d+)”, extract the “\d+\.\d+” part as the OSversion. If version extraction for one condition fails, the analyzingengine may try the next condition or the next keyword in the user agentstring with a lower weight. For other keywords like browser keywords,device keywords, etc., the analyzing engine may detect them and extractcorresponding versions in a similar manner as the OS keyword.

When there are new devices, new OS/browser or new OS/browser versions,there may be detection failures from a large set of user agent strings.In that case, an analyzing database building engine may collect thedetection failures and extract new keywords from the failed user agentstrings. For example, the building engine may group the failed useragent strings into clusters and rank the clusters by number of theirrespective user agent strings. The building engine may compare useragent strings in the top clusters and automatically determine newkeywords based on the comparisons. The newly determined keywords may bestored in a database for future user agent detection.

Additional novel features will be set forth in part in the descriptionwhich follows, and in part will become apparent to those skilled in theart upon examination of the following and the accompanying drawings ormay be learned by production or operation of the examples. The novelfeatures of the present teachings may be realized and attained bypractice or use of various aspects of the methodologies,instrumentalities and combinations set forth in the detailed examplesdiscussed below.

FIG. 1 illustrates an exemplary system for analyzing user agent strings,according to an embodiment of the present teaching. The exemplary systemincludes an application server 110, a user agent 102, a user agentstring database 104, a user agent string analyzing engine 120, ananalyzing database 130, an analyzing database building engine 140, andan optional administrator 150. The user agent 102 may be softwareinstalled on a user device to communicate with the user agent stringanalyzing engine 120 and/or the application server 110. The user agent102 may submit a user agent string that includes its identity relatedinformation like its application type, device information, operatingsystem (OS), OS version, software vendor, software revision, browser,browser version, etc. The user agent string database 104 stores allpreviously submitted user agent strings from the user agent 102 and/orother user agents (not shown).

Based on user agent strings in the user agent string database 104, theanalyzing database building engine 140 may build up the analyzingdatabase 130 for analyzing a user agent string. The analyzing database130 may comprise a keyword list database 132, an extraction patterndatabase 134, and other databases. FIG. 2 illustrates a keyword list 210stored in the keyword list database 132, according to an embodiment ofthe present teaching. As shown in FIG. 2 , each keyword in the keywordlist 210 is associated with a type 222, a priority 224, and validationconditions 226. The type 222 may represent a type of the keyword, whichmay be OS, browser, device, etc. For example, “blackberry” is a keywordwith a device type; and “windows” is a keyword with an OS type. Thefollowing is an exemplary keyword list: ( ...blackberry macintoshsymblanos mac os x nlntendo androld windows symblan... ), wheredifferent keywords may have different types.

The priority 224 in FIG. 2 may represent a weight of the keyword when itappears together with other keywords in a user agent string. Forexample, the following defines keyword weights or priorities fordifferent OS type keywords:

array(          “android” => 100,          “winnt” => 60,         “linux” => 0         );

which means if “android”, “winnt”, and “linux” are all shown in a sameuser agent string, “android” has the highest probability to represent atrue OS and hence has the highest priority to be analyzed for versionand other related information, while “winnt” has a lower probability andpriority, and “linux” has the lowest probability and priority. Theweights shown above may be determined by the administrator 150 based onprior experience and/or dynamically modified by the analyzing databasebuilding engine 140 based on user agent detection rate at the user agentstring analyzing engine 120. In present disclosure, “user agentdetection rate”, “user agent coverage rate”, and “user agent detectioncoverage” will be used interchangeably to mean a rate or probability ofcorrect detection of a user agent’s identity information.

The validation conditions 226 in FIG. 2 may represent conditions forvalidating the keyword when this keyword is shown in a user agentstring. For example, “linux” shown in a user agent string may or may notrepresent an OS. This can be determined or validated by a prefixcharset, e.g. “Red Hat”. That is, if a prefix charset “Red Hat” is foundin the same user agent string, the “linux” can be validated as an OStype keyword found in the user agent string. In general, the validationconditions 226 may comprise different charset-based conditions 232, 234... 236. For example, charset-based condition 1 232 may specify left(prefix) charset and right (subfix) charset for a keyword to validate orinvalidate the keyword, in the following format: “keyword” =>array(“prefix charset”, “subfix charset”, “valid or invalid”). Forexample, “mobile” => array(“(ʺ, ʺ;”, “valid”) means that the keyword“mobile” is valid when it has a prefix “(” and a subfix ʺ;”, i.e., whenit is shown in form of “(mobile;”. In other examples, some charsets maybe specified to make a keyword invalid, in accordance with the aboveformat. In some embodiments, the validation conditions 226 may includeconditions not based on charset, but based on e.g. position of thekeyword, frequency of the keyword, source of the keyword, etc.

FIG. 3 illustrates version extraction patterns stored in the extractionpattern database 134, according to an embodiment of the presentteaching. As shown in FIG. 3 , each keyword may be associated withdifferent version extraction patterns. For example, keyword 1 302 isassociated with version extraction patterns 320... 330. A versionextraction pattern, e.g. the version extraction pattern 320, may includea matching condition 321, a name 322, a version pattern 324, a versionposition 326, and a flag 328. The matching condition 321 is a conditionto be tested with a user agent string having keyword 1. Assuming keyword1 has a type of OS, if the user agent string meets the matchingcondition 321, the user agent string analyzing engine 120 will determinethe name 322 as the name of OS and may extract OS version according tothe version pattern 324 and the version position 326. The versionpattern 324 indicates a pattern of characters expected in the user agentstring. The version position 326 indicates a position in the versionpattern 324 where version information is located. The flag 328 indicatesthe next step in case the version extraction fails. The version extractpatterns have the following format:

“keyword1” = array(          array(“condition1”, “name1”, “version pattern1”, “version post”, “flag1”),          array(“condition2”, “name2”, “version pattern2”, “version pos2”, “flag2”)        )

An exemplary version extract pattern for keyword “blackberry” is shownbelow:

“blackberry” => array(        array(“ ber”, “blackberry”, “ ber(\d+\.\d+)”, 1, “”),        array(“version”, “blackberry”, “blackberry(?!; opera).*?version\/(\d+\.\d+)”, 1, “”),        array(“midp”, “blackberry”, “blackberry(?! opera).*?\/(\d+\.\d+)”, 1, “”),        array(“ucweb”, “blackberry”, “blackberry.*?(\/I; )(\d+\.\d+)”, 2, “”),        array(“opera”, “blackberry”, “”, -1, “”),        array(“-1”, “blackberry”, “”, -1, “”)        )

In this example, the first array indicates that if a user agent stringhaving OS keyword “blackberry” includes a sub-string “ber”, the OS namewill be identified as “blackberry” and the OS version will be extractedfrom the version pattern “ ber(\d+\.\d+)”. The version pattern “ber(\d+\.\d+)” means a string has “ ber” followed by “‘one or moredigits’ . ‘one or more digits’”. The version position is 1, whichindicates that the OS version is located inside the first pair ofparentheses in the version pattern “ ber(\d+\.\d+)”, i.e. the part of“\d+\.\d+”. For example, if a string = “bla bla ber10.2 bla ʺ, thesystem will determine OS name as “blackberry”, extract version using theversion pattern “ ber(\d+\.\d+)”, and return the version as “10.2”. Thepair of parentheses may indicate boundary for some digits.

In the above example, the version pattern in the second array is“blackberry(?!; opera). *?version\/(\d+\.\d+)”. This means that asubject string is expected to include “blackberry”, not followed by “;opera”, then followed by any characters until meet “version/ ‘one ormore digits’ . ‘one or more digits’”. The version pattern in the fourtharray is “blackberry. *?(\/I; )(\d+\.\d+)″, which means that the subjectstring is expected to include “blackberry” followed by any characters,then a character “/” or “; “, then ‘“one or more digits’ . ‘one or moredigits’”. The version position in the fourth array is 2, which means theOS version is located inside the second pair of parentheses of theversion pattern. When the version position is -1, e.g. in the fiftharray and the sixth array, no version is extracted. When the matchingcondition is -1, e.g. in the sixth array, a default value is assigned,e.g. the default value here is “blackberry” without version information.

In some scenario, the version extraction may fail even if the matchingcondition is met. For example, a user agent string includes “ ber” butdoes not include “(\d+\.\d+)” as expected in the version pattern of thefirst array above. In this case, the system will check the flag 328 todetermine the next step. The flag 328 may be “c” which means trying nextcondition, e.g. trying the second condition if the first condition failsto give the version. The flag 328 may be “k” which means trying nextextracted keyword, e.g. trying another keyword “linux” if the keyword“blackberry” fails to give the version, when the user agent stringincludes both keywords “linux” and “blackberry”. In practice, when auser agent string includes multiple keywords, the order of the keywordsto be tested for version extraction may be determined based on theirrespective priorities 224. If the flag 328 is neither “c” nor “k”, noversion value or a default version value will be applied.

Referring back to FIG. 1 , the analyzing database building engine 140may build up the keyword list database 132 and the extraction patterndatabase 134, based on historical user agent strings and/or unrecognizeduser agent strings from the user agent string analyzing engine 120. Theuser agent string analyzing engine 120 in this example receives andanalyzes user agent strings from the user agent 102 and sends thedetected user agent information to the application server 110. Thedetected user agent information may include identity information of theuser agent, like application type, device information, OS, OS version,software vendor, software revision, browser, and browser version. Assuch, the application server 110 can utilize the information for webpage content adaptation, advertisement targeting, personalizationanalysis, etc.

FIG. 4 illustrates an exemplary diagram of the user agent stringanalyzing engine 120, according to an embodiment of the presentteaching. The user agent string analyzing engine 120 in this exampleincludes normalization rule 401, a string pre-processing module 402, astring parsing module 404, a fetching module 410, and an analyzingmodule 420. The string pre-processing module 402 in this example mayreceive a user agent string, e.g. from the user agent 102. The stringpre-processing module 402 may normalize the received user agent stringbased on the normalization rule 401. For example, the normalization mayinclude lowercasing the string, pre-appending and post-appending spacesto the string, etc. The string parsing module 404 in this example mayparse the user agent string and send the parsed string to the analyzingmodule 420 for keyword extraction.

The fetching module 410 in this example includes a keyword fetching unit412 and a pattern fetching unit 414. The keyword fetching unit 412 mayfetch or retrieve a keyword list with associated metadata from thekeyword list database 132. The associated metadata may includeinformation about type, priority, and validation conditions associatedwith the retrieved keywords. The keyword fetching unit 412 may send theretrieved keyword list with the associated metadata to the analyzingmodule 420 for keyword extraction.

The pattern fetching unit 414 may fetch or retrieve version extractionpatterns from the extraction pattern database 134. As discussed above,each version extraction pattern may include a matching condition, aname, a version pattern, a version position, and a flag. The patternfetching unit 414 may send the retrieved version extraction patterns tothe analyzing module 420 for version extraction.

The analyzing module 420 in this example includes a keyword extractionunit 422, a keyword validation unit 424, a version condition matchingunit 426, and a version extraction unit 428. The keyword extraction unit422 may receive the parsed user agent string from the string parsingmodule 404 and receive the fetched keyword list from the keywordfetching unit 412. The keyword extraction unit 422 may compare theparsed user agent string with the fetched keyword list to identify oneor more candidate keywords. Each candidate keyword is included in theparsed user agent string and matches a keyword in the keyword list. Thekeyword extraction unit 422 then sends each candidate keyword to thekeyword validation unit 424 for validation.

The keyword validation unit 424 may receive the retrieved keywords andtheir respective associated metadata from the keyword fetching unit 412.For each candidate keyword sent by the keyword extraction unit 422, thekeyword validation unit 424 may check its validity based on somevalidation conditions contained in the associated metadata. For example,the keyword validation unit 424 may utilize neighbor charsets tovalidate or invalidate a candidate keyword. A neighbor charset may be aprefix charset that is before the candidate keyword in the user agentstring, or a subfix charset that is after the candidate keyword in theuser agent string. In one example, a validation condition “mobile” =>array(“(“, “;”, “valid”) means that the candidate keyword “mobile” isvalidated when it has a prefix “(“ and a subfix “;”, i.e., when it isshown in form of “(mobile;”. In another example, a validation condition“mobile” => array(“ t”, “;”, “invalid”) means that the candidate keyword“mobile” is invalidated when it has a prefix “ t” and a subfix “;”,i.e., when it is shown in form of “ tmobile;”.

After validation and/or invalidation of the candidate keywords, thekeyword validation unit 424 may determine one or more valid keywords inthe user agent string. The keyword validation unit 424 may assign eachvalid keyword into a category based on the type of the keyword. The typeinformation is in the associated metadata sent by the keyword fetchingunit 412. For example, the keyword validation unit 424 may assign thekeywords into OS category, browser category, device category, etc. Whenthere are multiple keywords in a category, the keyword validation unit424 may rank the keywords in the category based on their respectivepriorities. The priority information is in the associated metadata sentby the keyword fetching unit 412. For example, when two keywords“android” and “winnt” in the OS category are both identified andvalidated from a same user agent string, the keyword validation unit 424may rank “android” higher than “winnt” if “android” has a higherpriority than “winnt” in the keyword list database 132. Their prioritiesmay be determined by the administrator 150 based on his/her expertise,or based on a machine learning model fed with a large volume of trainingdata of user agent strings. Here, a higher priority indicates a higherprobability to truly represent the OS of the user agent. The keywordvalidation unit 424 may then send the ranked keywords in each categoryto the version condition matching unit 426 for version extraction.

In one situation, when there is no valid keyword identified from theuser agent string, the keyword validation unit 424 will send theunrecognized user agent string to the analyzing database building engine140 for failure analysis. A user agent string is unrecognized when thereis no candidate keyword extracted based on the keyword list in thekeyword list database 132, or when all candidate keywords extracted areinvalidated at the keyword validation unit 424.

The version condition matching unit 426 in this example receives theretrieved version extraction patterns from the pattern fetching unit414. For each category of keywords sent by the keyword validation unit424, the version condition matching unit 426 may process the keywordsone by one in the category according to their rankings determined by thekeyword validation unit 424. The version condition matching unit 426 canfirst process the keyword with a highest ranking, then one by one downthe ranking. For each keyword, the version condition matching unit 426may obtain one or more version matching conditions from the patternfetching unit 414.

Referring to the above example for keyword “blackberry” in OS category,a list of version matching conditions can be obtained. The versioncondition matching unit 426 can check the conditions one by oneaccording to their orders in the list. For each condition, the versioncondition matching unit 426 may check whether it is met by the useragent string. When the condition is a character string, the versioncondition matching unit 426 may check whether the character string isincluded in the user agent string. When the character string is “-1”,the condition may be defined to be met by any user agent string. If onecondition is not met, the version condition matching unit 426 goes on tocheck the next condition in the list.

When a condition is met, the version condition matching unit 426 willinform the version extraction unit 428 for version extraction. Theversion extraction unit 428 in this example receives a versionextraction pattern with a met condition identified by the versioncondition matching unit 426. Based on the version extraction pattern,the version extraction unit 428 may extract a version from the useragent string. Referring to the above example for keyword “blackberry”, aexemplary version extraction pattern may be array(“ ber”, “blackberry”,“ ber(\d+\.\d+)”, 1, “c”). The version condition matching unit 426 candetermine a user agent string “blackberry xxx ber10.2 zzz” includes thematching condition charset “ ber”, and inform the version extractionunit 428 for version extraction. The version extraction unit 428 candetermine the OS name to be “blackberry” based on the above exemplarypattern. The version extraction unit 428 can also extract version number10.2 from the user agent string, because they are the digits following “ber” in the version pattern “ber(\d+\.\d+)”. The version extraction unit428 may then send the OS name and version “blackberry 10.2” to theapplication server 110.

If the version extraction unit 428 cannot extract version informationfrom a user agent string, the version extraction unit 428 may check theflag in the version extraction pattern. This may happen when a useragent string, e.g. “blackberry xxx berry zzz”, includes the conditioncharset “ ber” but does not conform to the version pattern“ber(\d+\.\d+)”. In the above exemplary version extraction pattern, theflag is “c”, which means the version extraction unit 428 will inform theversion condition matching unit 426 to check the next condition in thelist. If the version condition matching unit 426 determines that this isthe last condition, the version extraction unit 428 may assign a defaultvalue to the version. In another example, if the flag is “k”, theversion extraction unit 428 will inform the version condition matchingunit 426 to check the conditions for next keyword in the same category.If the version condition matching unit 426 determines that this is thelast keyword in the category, the version extraction unit 428 may assigna default value to the version. In yet another example, if the flag isother than “c” and “k”, the version extraction unit 428 may use adefault value as the version information. The default values mentionedabove may be determined by the administrator 150 based on his/herexpertise and/or experience, or based on a machine learning model fedwith a large volume of training data of user agent strings. For example,version 10 may be determined to be a default version for keyword“blackberry” in the OS category.

A keyword may be assigned to multiple categories. For example, keyword“blackberry” may be assigned to both the device category and the OScategory. In this case, the keyword can be processed separatelyaccording to different category. For example, “blackberry” may be rankedhigher in the device category but ranked lower in the OS category. Forexample, “blackberry” may have a condition met for version extraction inthe device category but have no condition met for version extraction inthe OS category.

FIG. 5 is a flowchart of an exemplary process performed by the useragent string analyzing engine 120, according to an embodiment of thepresent teaching. At 502, a user agent string is received. At 504, alist of predefined keywords is obtained. At 506, candidate keywords areextracted from the user agent string based on the list. At 508, versionextraction patterns are obtained for each candidate keyword. At 510, akeyword name with version is determined from candidate keywords based onthe version extraction patterns.

FIG. 6 is a flowchart of another exemplary process performed by the useragent string analyzing engine 120 regarding extracting keywords,according to an embodiment of the present teaching. At 602, a user agentstring is received. At 604, the user agent string is normalized. At 606,the user agent string is parsed, e.g. into multiple substrings. At 608,keywords are identified from the parsed user agent string based on amatch between the parsed user agent string and a retrieved keyword list.At 610, keywords are validated based on neighbor charsets. At 612,keywords are assigned into categories, based on their associated types.At 614, keywords are ranked based on priorities in each category.

FIG. 7 is a flowchart of yet another exemplary process performed by theuser agent string analyzing engine 120 regarding extracting a versionfor each keyword, according to an embodiment of the present teaching. At702, version matching condition(s) are obtained for a keyword. At 704, aversion matching condition is retrieved. At 705, it is determinedwhether the condition is met. If the condition is not met, the processgoes back to 704 to retrieve another version matching condition. If thecondition is met, the process goes to 706, where a version is extractedfrom the user agent string based on the version expression pattern.

Moving to 707, it is determined whether the version extraction failed.If so, the process goes to 709 to check the flag in the versionexpression pattern. Based on the value of the flag, the process may goto 704 to retrieve next condition, or go to 702 to process next keyword,or go to 708 with a default version. If the version extraction did notfail, the process goes directly to 708. At 708, the keyword name and theversion (extracted or default version) are output, e.g. to anapplication server.

FIG. 8 illustrates an exemplary diagram of the analyzing databasebuilding engine 140, according to an embodiment of the present teaching.The analyzing database building engine 140 in this example includes auser agent receiver 802, a count based ranking unit 804, a user agentclustering unit 806, a keyword extractor 808, a keyword check userinterface 810, and an analyzing database updater 812.

The user agent receiver 802 in this example receives user agent strings,either from the user agent string database 104 or from the unrecognizeduser agent strings sent by the user agent string analyzing engine 120.These user agent strings represents detection failures of some useragents. This may be because the user agent strings include informationabout a new device, a new OS, or a new browser whose keywords have notbeen stored in the analyzing database 130. In one example, the analyzingdatabase building engine 140 may daily collect user agent strings froman Audience Business Feed, which contains records of all the trafficcoming to Yahoo. Then, the analyzing database building engine 140 mayfind out the user agent strings unrecognized by the user agent stringanalyzing engine 120.

The count based ranking unit 804 in this example may rank theunrecognized user agent strings based on their respective counts. Forexample, a list of user agents with counts are listed below, in theformat of user-agent | count:

iBank/40093 CFNetwork/520.5.1 Darwin/11.4.2 (x86_64) (iMacll%2C3) | 1000       UCWEB/2.0(Linux; U; en-us; GT-S7262 Build/JZ054K) U2/1.0.0UCBrowser/9.4.1.362 Mobile 1900       Soulver/4918 CFNetwork/673.0.3 Darwin/13.0.0 (x86_64) (MacBookProlO%2Cl) |       800       UCWEB/2.0(Linux; U; en-us; AKL_M501 Build/IMM76D) U2/1.0.0UCBrowser/9.4.1.362 Mobile | 700

The first user agent string “iBank/40093 CFNetwork/520.5.1 Darwin/11.4.2(x86_64) (iMacl1%2C3)” has appeared 1000 times in the traffic, and isranked the first according to its highest counts.

The user agent clustering unit 806 in this example groups the user agentstrings into clusters. The grouping may be based on a distance measurebetween user agent strings. The distance measure may be Levenshteindistance. Some clusters having a smaller distance to each other may bemerged into one big cluster. By merging the user agent strings intoclusters, the analyzing database building engine 140 may focus onanalyzing clusters with most popular user agent strings.

The keyword extractor 808 in this example may compare different useragent strings in each cluster or only in top clusters with most popularuser agent strings. Based on the comparing, the keyword extractor 808may extract some new keywords that can represent a new device, a new OS,a new browser, etc. The keyword extractor 808 may send the extract newkeywords to the keyword check user interface 810, where theadministrator 150 can check these new keywords. The keyword check userinterface 810 and the administrator 150 are both optional in the system.

The analyzing database updater 812 in this example may determineassociated metadata for each new keyword. The associated metadata mayinclude information about the keyword’s type, priority, and validationcondition(s). The analyzing database updater 812 may then update theanalyzing database 130 with the new keywords and their associatedmetadata.

FIG. 9 is a flowchart of an exemplary process performed by the analyzingdatabase building engine 140, according to an embodiment of the presentteaching. At 902, a plurality of user agent strings is received. At 904,the user agent strings are ranked based on their respective counts intraffic. At 906, the user agent strings are grouped into one or moreclusters. At 908, user agent strings in a cluster are compared. This mayhappen for each cluster or the top one or more clusters with most useragent strings.

At 910, at least one keyword is determined based on the comparing. At912, a human check is received for the at least one keyword via a userinterface. At 914, the at least one keyword is saved into a database,i.e. the database is updated with the at least one keyword.

FIG. 10 illustrates an exemplary diagram of a user agent clusteringunit, e.g. the user agent clustering unit 806, according to anembodiment of the present teaching. The user agent clustering unit 806in this example includes a distance calculation unit 1002, a clustermerging determiner 1004, a cluster merging unit 1006, a cluster rankingunit 1008, and a cluster filter 1010. The distance calculation unit 1002in this example receives user agent strings ranked according to theircounts. The distance calculation unit 1002 may select one of thedistance calculation models 1001 stored in the user agent clusteringunit 806. For example, one distance calculation model may be based onLevenshtein distance. The Levenshtein distance between strings a and bis given by lev(strlen(a), strlen(b)) where

lev(i,j) = max(i,j), if min(i,j) == 0;       lev(i,j) = min(lev(i - 1,j) + 1, lev(i,j - 1) + 1, lev(i - 1, j - 1) + 1), if a[i] ! =b[j];       lev(i, j) = min(lev(i - 1, j) + 1, lev(i, j - 1) + 1, lev(i - 1, j - 1)), if a[i] == b[j].

Accordingly, the distance calculation unit 1002 may calculate aLevenshtein distance between two user agent strings. The distancecalculation unit 1002 may also calculate a Levenshtein distance betweentwo clusters of user agent strings, e.g. cluster 1 and cluster 2. TheLevenshtein distance between cluster 1 and cluster 2 is a minimumdistance among all distances between all pairs of user agent strings (i,j), where i belongs to cluster 1 and j belongs to cluster 2. In oneexample, the distance calculation unit 1002 may only calculate distancesbetween top ranked user agent strings according to their counts.

The cluster merging determiner 1004 in this example may determinewhether to merge two clusters based on a distance between them and acluster merging threshold 1003 stored in the user agent clustering unit806. For example, two clusters cannot be merged if a distance betweenthem is larger than the cluster merging threshold 1003. On the otherhand, if a distance between two clusters is smaller than the clustermerging threshold 1003, the cluster merging unit 1006 may merge the twoclusters into one big cluster.

The distance calculation unit 1002, the cluster merging determiner 1004,and the cluster merging unit 1006 may cooperate to perform ahierarchical agglomerative clustering algorithm. The hierarchicalagglomerative clustering algorithm is described as follows:

-   Input: a set of user agent strings U = {u[1], u[2], u[3], ...,    u[n]}; a threshold TH-   Output: a set of clusters C = {c[1], c[2], c[3], ..., c[m]}

Steps:

-   1. assign each user agent string into a single cluster.-   2. calculate distance between all pairs of clusters.-   3. let c[i], c[j] be the pair with minimum distance d[i,j]. If    d[i,j] > TH, go to step 5; otherwise, go to step 4.-   4. merge c[i], c[j] into a larger cluster and go to step 1.-   5. return the set of clusters C.

In one embodiment, the set of user agent strings U may include only thetop ranked user agent strings according to their counts. Given twoclusters c[i] and c[j], the distance between them is defined as theminimum Levenshtein distance between all pairs of (u, v), where ubelongs to c[i] and v belongs to c[j]. As discussed above, the distancecalculation unit 1002 may perform steps 1 and 2. The cluster mergingdeterminer 1004 may perform step 3 to determine whether to merge c[i],c[j] which are two clusters that are closest to each other among allclusters. The cluster merging unit 1006 may perform step 4 to merge c[i]and c[j] if the distance d[i,j] between c[i] and c[j] does not exceedthe threshold TH. On the other hand, if the distance d[i,j] between c[i]and c[j] exceeds the threshold TH, the cluster merging determiner 1004may perform step 5 to return the set of clusters C, or send the clustersC to the cluster ranking unit 1008.

The threshold TH may be determined based on previous experience and/ormodified based on a machine learning model fed with a large volume oftraining data of user agent strings. In practice, if the threshold TH istoo small, the set of clusters C may be too large, which yields acomplicated process for keyword extraction, especially when theadministrator 150 is needed for final check each newly extractedkeyword. On the other hand, if the threshold TH is too large, the numberof clusters will be small but the number of user agent strings in eachcluster will be large, which may make the comparisons between user agentstrings in a cluster too complicated.

The cluster ranking unit 1008 in this example may rank the clusters in Cbased on a ranking model 1007 stored in the user agent clustering unit806. According to one ranking model, the cluster ranking unit 1008 mayrank the clusters based on number of user agent strings they contain.According to another ranking model, the cluster ranking unit 1008 mayrank the clusters in C based on total count of the user agent stringsthey contain. For example, if a cluster contains two user agent strings,one having count 1000 and the other having count 900, the total countfor the cluster will be 1900.

The cluster filter 1010 in this example may filter the ranked clustersto remove lower ranked clusters. As such, only top ranked clusters aresent to the keyword extractor 808 for keyword extraction. In oneembodiment, the cluster filter 1010 may allow all ranked clusters besent to the keyword extractor 808 for keyword extraction.

FIG. 11 is a flowchart of an exemplary process performed by the useragent clustering unit 806, according to an embodiment of the presentteaching. At 1102, ranked user agent strings are received. At 1104, adistance calculation model is selected. At 1106, distances between eachpair of clusters (or user agent strings) are calculated. At 1108, a pairof clusters having the minimum distance Dm is identified.

At 1109, it is determined whether Dm is larger than a predeterminedThreshold. If so, the process goes to 1112. Otherwise, the process goesto 1110, where the pair of clusters may be merged into one largercluster, and the process goes back to 1106. At 1112, a ranking model isselected. At 1114, the clusters are ranked based on the model. At 1116,the ranked clusters are filtered.

FIG. 12 illustrates an exemplary diagram of a keyword extractor, e.g.the keyword extractor 808, according to an embodiment of the presentteaching. The keyword extractor 808 in this example includes a useragent comparing unit 1202, a subsequence extractor 1204, a subsequenceremoving unit 1206, a subsequence cleaning unit 1208, a keyworddeterminer 1210, and a keyword type identifier 1212. The user agentcomparing unit 1202 in this example can receive user agent clusters fromthe user agent clustering unit 806. The clusters may be ranked in anorder.

For each cluster, the subsequence extractor 1204 may compare the useragent strings within the cluster. Based on the comparisons, thesubsequence extractor 1204 may extract a longest common subsequence(LCS) among the user agent strings. In one embodiment, the subsequenceextractor 1204 may perform the comparing and extracting on clusters oneby one, according to their respective ranked order. The subsequenceremoving unit 1206 in this example removes the LCS from each user agentstring in the cluster to obtain a remaining subsequence. The subsequencecleaning unit 1208 may clean the LCS and/or the remaining subsequence byremoving predefined noises. In one embodiment, the subsequence cleaningunit 1208 may retrieve known keywords from the analyzing database 130,and remove the known keywords from the LCS and/or the remainingsubsequence.

The keyword determiner 1210 in this example can determine one or morenew keywords from the cleaned LCS and/or the cleaned remainingsubsequence. The keyword type identifier 1212 in this example identifiesthe keyword’s type, which may be a new device model, a new OS name, anew browser name, etc. This may depends on comparisons with knownkeyword types. The keyword type identifier 1212 may then send the newkeywords with their associated types.

For example, given a cluster with two user agent strings:

UCWEB/2.0(Linux; U; en-us; GT-S7262 Build/JZ054K) U2/1.0.0       UCBrowser/9.4.1.362 Mobile;       UCWEB/2.0(Linux; U; en-us; AKL_M501 Build/IMM76D) U2/1.0.0       UCBrowser/9.4.1.362 MobileThe LCS will be “UCWEB/2.0(Linux; U; en-us; Build/) U2/1.0.0 UCBrowser/9.4.1.362Mobile”.

Let the predefined noises set be {“U;”, “en-us;”, “Build/”, “U2/”,“Mobile”, ...}. Then, the clean LCS after removing all the noises andnumbers should be “UCWEB Linux UCBrowser”, which are keywords indicatinga new OS/browser name. Furthermore, if the system removes LCS from thetwo user agent strings, to obtain remaining subsequences “GT-S7262JZO54K” and “AKL_M501 IMM76D”, which are keywords indicating new devicemodels. These newly identified keywords will be sent and stored into theanalyzing database 130.

FIG. 13 is a flowchart of an exemplary process performed by the keywordextractor 808, according to an embodiment of the present teaching. At1302, user agent clusters are obtained. At 1304, user agent stringswithin a user agent cluster are compared. At 1306, a longest commonsubsequence (LCS) among the user agent string is extracted. At 1308, theLCS is removed from each user agent string to obtain a remainingsubsequence.

At 1310, the LCS and/or the remaining subsequence are cleaned. At 1312,new keywords are determined from the LCS and/or the remainingsubsequence. At 1314, a type of user agent information is identifiedassociated with each new keyword. At 1316, the new keywords are sentwith their associated types.

FIG. 14 is a high level depiction of an exemplary networked environmentfor analyzing user agent strings, according to an embodiment of thepresent teaching. In FIG. 14 , the exemplary system 1400 includes theapplication server 110, the user agent string analyzing engine 120, theanalyzing database 130, the analyzing database building engine 140, oneor more users 1408, a network 1406, and content sources 1412. Thenetwork 1406 may be a single network or a combination of differentnetworks. For example, the network 1406 may be a local area network(LAN), a wide area network (WAN), a public network, a private network, aproprietary network, a Public Telephone Switched Network (PSTN), theInternet, a wireless network, a virtual network, or any combinationthereof. In an example of Internet advertising, the network 1406 may bean online advertising network or ad network that is a company connectingadvertisers to web sites that want to host advertisements. A keyfunction of an ad network is aggregation of ad space supply frompublishers and matching it with advertiser demand. The network 1406 mayalso include various network access points, e.g., wired or wirelessaccess points such as base stations or Internet exchange points1406-1... 1406-2, through which a data source may connect to the network1406 in order to transmit information via the network 1406.

Users 1408 may be of different types such as users connected to thenetwork 1406 via desktop computers 1408-1, laptop computers 1408-2, abuilt-in device in a motor vehicle 1408-3, or a mobile device 1408-4. Auser 1408 may send a user agent string to the application server 110and/or the user agent string analyzing engine 120 via the network 1406.In this embodiment, the user agent string database 104 may be located inthe application server 110 and can be accessed by the user agent stringanalyzing engine 120 and/or the analyzing database building engine 140.The user agent string analyzing engine 120 and the analyzing databasebuilding engine 140 can work with the analyzing database 130 asdiscussed above.

The content sources 1412 include multiple content sources 1412-1,1412-2... 1412-3, such as vertical content sources. A content source1412 may correspond to a website hosted by an entity, whether anindividual, a business, or an organization such as USPTO.gov, a contentprovider such as cnn.com and Yahoo.com, a social network website such asFacebook.com, or a content feed source such as tweeter or blogs. Theapplication server 110 may access information from any of the contentsources 1412-1, 1412-2... 1412-3.

FIG. 15 is a high level depiction of another exemplary networkedenvironment for analyzing user agent strings, according to an embodimentof the present teaching. The exemplary system 1500 in this embodiment issimilar to the exemplary system 1400 in FIG. 14 , except that the useragent string analyzing engine 120 and the analyzing database buildingengine 140 in this embodiment serve as backend systems of theapplication server 110.

FIG. 16 illustrates coverage rates for detecting different user agentidentity information, according to an embodiment of the presentteaching. As shown in FIG. 16 , the method in present disclosure(referred as catalog) can provide a coverage rate more than 99%, for OS,browser, and device. This means that a user agent string may beidentified with a probability of more than 99% using the methoddisclosed above. In contrast, an existing product WURFL (WirelessUniversal Resource FiLe) may only achieve a coverage rate for OS andbrowser at below 95%. The device coverage rate for WURFL is around 90%.In addition, the method in present disclosure can achieve 100% accuracyrate with only 0.89 ms time cost of detection. Regarding to themaintenance effort, the method in present disclosure can reduce it to 10percent of the existing method.

FIG. 17 illustrates OS coverage rates of different products, accordingto an embodiment of the present teaching. While the method in presentdisclosure (referred as mdc) can achieve an OS coverage rate around99.4%, an existing product (referred as Ymeta) can achieve an OScoverage rate around 99.1%.

FIG. 18 depicts a general mobile device architecture on which thepresent teaching can be implemented. In this example, the user device1408 is a mobile device 1800, including but is not limited to, a smartphone, a tablet, a music player, a handled gaming console, a GPSreceiver. The mobile device 1800 in this example includes one or morecentral processing units (CPUs) 1802, one or more graphic processingunits (GPUs) 1804, a display 1806, a memory 1808, a communicationplatform 1810, such as a wireless communication module, storage 1812,and one or more input/output (I/O) devices 1814. Any other suitablecomponent, such as but not limited to a system bus or a controller (notshown), may also be included in the mobile device 1800. As shown in FIG.18 , a mobile operating system 1816, e.g., iOS, Android, Windows Phone,etc., and one or more applications 1818 may be loaded into the memory1808 from the storage 1812 in order to be executed by the CPU 1802. Theapplications 1818 may include a web browser or any other suitable mobilesearch apps. Execution of the applications 1818 may cause the mobiledevice 1800 to perform some processing as described before. For example,the user agent string may be sent by the GPU 1804 in conjunction withthe applications 1818.

To implement the present teaching, computer hardware platforms may beused as the hardware platform(s) for one or more of the elementsdescribed herein. The hardware elements, operating systems, andprogramming languages of such computers are conventional in nature, andit is presumed that those skilled in the art are adequately familiartherewith to adapt those technologies to implement the processingessentially as described herein. A computer with user interface elementsmay be used to implement a personal computer (PC) or other type of workstation or terminal device, although a computer may also act as a serverif appropriately programmed. It is believed that those skilled in theart are familiar with the structure, programming, and general operationof such computer equipment and as a result the drawings should beself-explanatory.

FIG. 19 depicts a general computer architecture on which the presentteaching can be implemented and has a functional block diagramillustration of a computer hardware platform that includes userinterface elements. The computer may be a general-purpose computer or aspecial purpose computer. This computer 1900 can be used to implementany components of the user agent string analysis architecture asdescribed herein. Different components of the system, e.g., as depictedin FIGS. 14 and 15 , can all be implemented on one or more computerssuch as computer 1900, via its hardware, software program, firmware, ora combination thereof. Although only one such computer is shown, forconvenience, the computer functions relating to user agent stringanalysis may be implemented in a distributed fashion on a number ofsimilar platforms, to distribute the processing load.

The computer 1900, for example, includes COM ports 1902 connected to andfrom a network connected thereto to facilitate data communications. Thecomputer 1900 also includes a CPU 1904, in the form of one or moreprocessors, for executing program instructions. The exemplary computerplatform includes an internal communication bus 1906, program storageand data storage of different forms, e.g., disk 1908, read only memory(ROM) 1910, or random access memory (RAM) 1912, for various data filesto be processed and/or communicated by the computer, as well as possiblyprogram instructions to be executed by the CPU 1904. The computer 1900also includes an I/O component 1914, supporting input/output flowsbetween the computer and other components therein such as user interfaceelements 1916. The computer 1900 may also receive programming and datavia network communications.

Hence, aspects of the method of user agent string analysis, as outlinedabove, may be embodied in programming. Program aspects of the technologymay be thought of as “products” or “articles of manufacture” typicallyin the form of executable code and/or associated data that is carried onor embodied in a type of machine readable medium. Tangiblenon-transitory “storage” type media include any or all of the memory orother storage for the computers, processors or the like, or associatedmodules thereof, such as various semiconductor memories, tape drives,disk drives and the like, which may provide storage at any time for thesoftware programming.

All or portions of the software may at times be communicated through anetwork such as the Internet or various other telecommunicationnetworks. Such communications, for example, may enable loading of thesoftware from one computer or processor into another. Thus, another typeof media that may bear the software elements includes optical,electrical, and electromagnetic waves, such as used across physicalinterfaces between local devices, through wired and optical landlinenetworks and over various air-links. The physical elements that carrysuch waves, such as wired or wireless links, optical links or the like,also may be considered as media bearing the software. As used herein,unless restricted to tangible “storage” media, terms such as computer ormachine “readable medium” refer to any medium that participates inproviding instructions to a processor for execution.

Hence, a machine readable medium may take many forms, including but notlimited to, a tangible storage medium, a carrier wave medium or physicaltransmission medium. Non-volatile storage media include, for example,optical or magnetic disks, such as any of the storage devices in anycomputer(s) or the like, which may be used to implement the system orany of its components as shown in the drawings. Volatile storage mediainclude dynamic memory, such as a main memory of such a computerplatform. Tangible transmission media include coaxial cables; copperwire and fiber optics, including the wires that form a bus within acomputer system. Carrier-wave transmission media can take the form ofelectric or electromagnetic signals, or acoustic or light waves such asthose generated during radio frequency (RF) and infrared (IR) datacommunications. Common forms of computer-readable media thereforeinclude for example: a floppy disk, a flexible disk, hard disk, magnetictape, any other magnetic medium, a CD-ROM, DVD or DVD-ROM, any otheroptical medium, punch cards paper tape, any other physical storagemedium with patterns of holes, a RAM, a PROM and EPROM, a FLASH-EPROM,any other memory chip or cartridge, a carrier wave transporting data orinstructions, cables or links transporting such a carrier wave, or anyother medium from which a computer can read programming code and/ordata. Many of these forms of computer readable media may be involved incarrying one or more sequences of one or more instructions to aprocessor for execution.

Those skilled in the art will recognize that the present teachings areamenable to a variety of modifications and/or enhancements. For example,although the implementation of various components described above may beembodied in a hardware device, it can also be implemented as a softwareonly solution - e.g., an installation on an existing server. Inaddition, the units of the host and the client nodes as disclosed hereincan be implemented as a firmware, firmware/software combination,firmware/hardware combination, or a hardware/firmware/softwarecombination.

While the foregoing has described what are considered to be the bestmode and/or other examples, it is understood that various modificationsmay be made therein and that the subject matter disclosed herein may beimplemented in various forms and examples, and that the teachings may beapplied in numerous applications, only some of which have been describedherein. It is intended by the following claims to claim any and allapplications, modifications and variations that fall within the truescope of the present teachings.

We claim:
 1. A method for analyzing a user agent string, comprising:receiving the user agent string; extracting, based on a list ofpredefined keywords, candidate keywords from the user agent string;obtaining a plurality of version extraction patterns for each of thecandidate keywords, wherein each of the plurality of version extractionpatterns indicates a name, a version pattern, and a correspondingmatching condition; and if the matching condition is met, determiningthat the candidate keyword corresponds to the name, and extracting aversion according to the version pattern.
 2. The method of claim 1,further comprising: validating each of the candidate keywords based onone or more neighbor charsets of the candidate keyword in the user agentstring.
 3. The method of claim 1, wherein the matching conditioncomprises whether the user agent string includes a predeterminedsub-string.
 4. The method of claim 1, wherein the version pattern is apattern of characters, associated with the version, expected in the useragent string.
 5. The method of claim 1, wherein the name corresponds toa name of an operation system and the version corresponds to a versionof the operation system.
 6. The method of claim 1, wherein each of theplurality of version extraction patterns further indicates a position inthe version pattern where the version is located.
 7. The method of claim1, wherein each of the plurality of version extraction patterns furtherindicates a next step if the step of extracting a version fails.
 8. Anon-transitory, computer-readable medium having information recordedthereon for analyzing a user agent string, wherein the information, whenread by a machine, causes the machine to perform operations comprising:receiving the user agent string; extracting, based on a list ofpredefined keywords, candidate keywords from the user agent string;obtaining a plurality of version extraction patterns for each of thecandidate keywords, wherein each of the plurality of version extractionpatterns indicates a name, a version pattern, and a correspondingmatching condition; and if the matching condition is met, determiningthat the candidate keyword corresponds to the name, and extracting aversion according to the version pattern.
 9. The medium of claim 8,wherein the operations further comprise: validating each of thecandidate keywords based on one or more neighbor charsets of thecandidate keyword in the user agent string.
 10. The medium of claim 8,wherein the matching condition comprises whether the user agent stringincludes a predetermined sub-string.
 11. The medium of claim 8, whereinthe version pattern is a pattern of characters, associated with theversion, expected in the user agent string.
 12. The medium of claim 8,wherein the name corresponds to a name of an operation system and theversion corresponds to a version of the operation system.
 13. The mediumof claim 8, wherein each of the plurality of version extraction patternsfurther indicates a position in the version pattern where the version islocated.
 14. The medium of claim 8, wherein each of the plurality ofversion extraction patterns further indicates a next step if the step ofextracting a version fails.
 15. A system for analyzing a user agentstring, the system comprising: memory storing computer programinstructions; and one or more processors that, in response to executingthe computer program instructions, effectuate operations comprising:receiving the user agent string; extracting, based on a list ofpredefined keywords, candidate keywords from the user agent string;obtaining a plurality of version extraction patterns for each of thecandidate keywords, wherein each of the plurality of version extractionpatterns indicates a name, a version pattern, and a correspondingmatching condition; and if the matching condition is met, determiningthat the candidate keyword corresponds to the name, and extracting aversion according to the version pattern.
 16. The system of claim 15,wherein the operations further comprise: validating each of thecandidate keywords based on one or more neighbor charsets of thecandidate keyword in the user agent string.
 17. The system of claim 15,wherein the matching condition comprises whether the user agent stringincludes a predetermined sub-string.
 18. The system of claim 15, whereinthe version pattern is a pattern of characters, associated with theversion, expected in the user agent string.
 19. The system of claim 15,wherein the name corresponds to a name of an operation system and theversion corresponds to a version of the operation system.
 20. The systemof claim 15, wherein each of the plurality of version extractionpatterns further indicates a position in the version pattern where theversion is located.